

package stack;


/**
 * Exercise 2.3
 * @author Katrin Baryshnikova
 */
public class TestStack {

    
    /**
     * 
     * @param args
     */
    public static void main(String[] args) {
        int n = 10;
        Stack<Integer> st1 = new Stack<Integer>(n);
        Stack<Integer> st2 = new Stack<Integer>(n);
        Stack<Integer> st3 = new Stack<Integer>(n);
        Stack<Integer> st4 = new Stack<Integer>(n);
        
        int i = 0, j = 19;
        
        // Заполняем два исходных стека
        while(!st1.isFull() || !st2.isFull()) {
            st1.push(i++);
            st2.push(j--);
        }    
        
        System.out.println("Before:");
        st1.showStackArray();
        st2.showStackArray();
        
        // Производим обмен между стеками
        while(!st2.isEmpty()) {
            st3.push(st2.pop());
        }
        
        while(!st1.isEmpty()) {
            st2.push(st1.pop());
        }
       
        while(!st3.isEmpty()) {
            st4.push(st3.pop());
        }
        
        while(!st4.isEmpty()) {
            st1.push(st4.pop());
        }
        // Выводим результат
        System.out.println("After:");
        st1.showStackArray();
        st2.showStackArray();
    }
}
